home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1985-06-29 | 7.9 KB | 125 lines
5 CLS:KEY OFF:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT:KEY 2,"GOTO 60"+CHR$(13):KEY 10,"RUN"+CHR$(34)+"BLUEMENU"+CHR$(34)+CHR$(13):LIST 10-57 10 '******************* EDUCATOR'S TOOLBOX SPECIAL **************************** 16 'KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE 18 'OPEN TEACHER'S / EDUCATOR'S TESTWRITER & GRADE SHEET PROGRAM OPEN 20 'OPEN OPEN 22 'OPEN This program was written and developed over a period of several OPEN 24 'OPEN years by Bill Alton, 4201 W Carol Avenue. Phoenix, AZ 85021. It is OPEN 26 'OPEN a superbly crafted and implemented program with application far be- OPEN 28 'OPEN ond test writing and grading. The program is expanded on the 360K disc. OPEN 30 'OPEN Big Blueberry Pie purchasers may examine the programming techniques in- OPEN 31 'OPEN volved. Please call up the TESTWRIT.DOC program with a "type" command OPEN 32 'OPEN in DOS. Load the SAMPLE.TWD program when running this program for an OPEN 33 'OPEN example of the TESTWRITERS capability. Bill Alton will welcome letters OPEN 34 'OPEN with comments and applications of this program from educators or other OPEN 35 'OPEN users. The program has been modified to work on Drive A. To use the OPEN 36 'OPEN program for production, change Drive A references in Lines 1840, 2410, OPEN 37 'OPEN and 3200 to Drive B. DO NOT OVERWRITE THE DRIVE A DISK. USE WRITE TAB! OPEN 38 'OPEN NOTE:! If you distribute this program, please leave Bill Alton's name OPEN 39 'OPEN in the lead-in REMARKS as shown. OPEN 40 'OPEN An expanded version is on the 320K disk as TEST2WRT.BAS OPEN 41 'OPEN (c) G I N A C O -- 1983 Ver 5.3/320 OPEN 50 'SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD 55 ' ***** < F2 > to RUN ******* < F10 > For BLUEMENU ***** 57 ' ====== To avoid DOCUMENTATION BOX each time, REM or DELETE line 5 ====== 60 CLS:SCREEN 0,0,0:WIDTH 80:CLEAR:FOR I=1 TO 10:KEY I,"":NEXT 100 COLOR 7,0 110 '*** T E S T W R I T E R *** 120 '*** BILL ALTON *** 130 '*** VERSION 1.0 05/15/83 *** 140 '*** FOR EPSON FX-80 PRINTER *** 160 CLEAR 1000:DIM Q$(100),Q1$(100),Q2$(100),A$(100,4),B$(100,4):UU$="##.":CLS:GOSUB 3230:LOCATE 12,26:PRINT"*** TESTWRITER ***":FOR X=1 TO 500:NEXT X:PG=2:GOTO 2280 270 ' *** WRITE TEST *** 280 CLS:LOCATE 8,15:LINE INPUT"SUBJECT ";TT$:IF TT$=""THEN TT$="U. S. HISTORY":CLS 320 CLS:LOCATE10,1:PRINT"INPUT A REFERENCE CODE (EG. CHAPTER 12 SECTON 1 --> ";:COLOR1:PRINT"C12S1";:COLOR7:PRINT" ) ";:LINEINPUT;S$:N=100:M=1 420 FORA=MTON 430 CLS:LOCATE8,15:PRINT"(TYPE 'END' IF LAST QUESTION)":PRINT"*** TYPE OUT QUESTION # ";A;" ***":PRINTSTRING$(80,196):LOCATE11,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE11,10:LINEINPUTQ$(A):IFQ$(A)="END"THENN=A-1:GOTO2280 550 LOCATE12,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE12,10:LINEINPUTQ1$(A):IFQ1$(A)=""THENQ1$(A)="XX 620 IFQ$(A)="X"THENA=(A-1):Q$(A)=" ":CLS:GOTO430 630 IFQ1$(A)="XX"THENQ2$(A)="XX"ELSELOCATE13,10:COLOR0,7:PRINTSPACE$(62):COLOR7,0:LOCATE13,10:LINEINPUTQ2$(A) 640 IFQ2$(A)=""THENQ2$(A)="XX 650 IFQ1$(A)="X"THENPRINT"RETYPING LAST QUESTION ";A:Q1$(A)=" ":CLS:GOTO430 660 IFQ2$(A)="X"THENQ2$(A)=" ":GOTO430 670 FORB=1TO4 680 CLS:PRINT"QUESTION #";A:PRINTSTRING$(80,223):PRINTQ$(A):IFQ1$(A)<>"XX"THENPRINTQ1$(A) 730 IFQ2$(A)<>"XX"THENPRINTQ2$(A) 740 PRINTSTRING$(80,177):PRINT"ANSWER # ";B;:IFB=1THENCOLOR17:PRINT" *** ENTER CORRECT ANSWER *** ":COLOR7,0 770 PRINT:PRINT"TYPE 'X' TO REDO ANSWERS":LOCATE14,15:COLOR0,7:PRINTSPACE$(12):COLOR7,0:LOCATE14,15:LINEINPUTA$(A,B):IFA$(A,B)="X"THENB=1:CLS:GOTO680 870 IF B=1 THEN A$(A,1)="*"+A$(A,1) 880 CLS:NEXTB,A:GOTO2280 910 ' *** START OF PRINT ROUTINE *** 920 CLS:X$="":INPUT"HIT ENTER TO PRINT -- 'R' TO RETURN TO MENU";X$:IFX$="R"ORX$="r"THEN2280 960 PRINT:PRINT:PRINT:INPUT"DO YOU WANT TO RANDOMIZE THE ANSWERS ";X$:IFLEFT$(X$,1)="Y"ORLEFT$(X$,1)="y"THENV=1ELSEV=0 1010 PRINT:INPUT"INPUT 'CODE' SYMBOL TO SEPERATE TEST VERSIONS (EG. #,*,@)";KK$:CLS:REM *** START PRINTING TO PRINTER *** 1050 PRINT"PRINTING":LPRINT DATE$;TAB(57)"Name ";STRING$(16,95):LPRINT S$;KK$;:LPRINT TAB(57)"Date/Rm _________ ( )":LPRINT STRING$(79,61):Y=40-(LEN(TT$)/2):LPRINT TAB(Y)TT$:LPRINT STRING$(79,CHR$(42)) 1130 LPRINT SU$;"INSTRUCTIONS:";EU$;SI$;" Choose the best answer and fill in the letter of the answer in":LPRINT TAB(15)"the blank to the left of the question.";EI$:LPRINT" ":LC=8:FOR A=1 TO N:CLS:IF Q$(A)=""THEN 1360 1200 PRINT"WORKING ON QUESTION ";A;TAB(65)"LINECOUNT = ";LC:LPRINT STRING$(5,95);:LPRINT TAB(7)USING UU$;A;:LPRINT TAB(11)Q$(A):LC=LC+1:IF Q1$(A)<>"XX"THEN LPRINT TAB(11)Q1$(A):LC=LC+1 1260 IFQ2$(A)<>"XX"THENLPRINTTAB(11)Q2$(A):LC=LC+1 1270 IFV=1THENGOSUB2510 1280 CLS:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(9);"A) ";RIGHT$(A$(A,1),(LEN(A$(A,1))-1));ELSELPRINTTAB(9)"A) ";A$(A,1); 1300 IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(45);"B) ";RIGHT$(A$(A,2),(LEN(A$(A,2))-1))ELSELPRINTTAB(45)"B) ";A$(A,2) 1310 IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(9);"C) ";RIGHT$(A$(A,3),(LEN(A$(A,3))-1));ELSELPRINTTAB(9)"C) ";A$(A,3); 1320 IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(45);"D) ";RIGHT$(A$(A,4),(LEN(A$(A,4))-1))ELSELPRINTTAB(45)"D) ";A$(A,4) 1330 LPRINT" ":LC=LC+4:IFLC>62THENGOSUB3100 1360 NEXTA:LPRINTCHR$(12):CLS:PG=2:PRINT"DO YOU WANT AN ANSWER KEY ":X$=INPUT$(1):IFLEFT$(X$,1)="N"ORLEFT$(X$,1)="n"THEN2280 1430 CLS:PRINTCHR$(23):PRINT"PRINTING ANSWER KEY":LPRINTDATE$;TAB(45)SEC$"* T E A C H E R'S C O P Y *";EEC$:LPRINTS$;:IFV=1THENLPRINTKK$; 1490 LPRINTTAB(50)SEX$;"---> K E Y <---";EEX$:LPRINTSTRING$(79,"*"):Y=40-(LEN(TT$)/2):LPRINTTAB(Y)TT$:LPRINTSTRING$(79,"*"):LPRINT" ":LPRINT" ":LPRINT" ":LC=10:FORA=1TON:IFQ$(A)=""THEN2280 1600 PRINT"WORKING ON QUESTION ";A:IFLEFT$(A$(A,1),1)="*"THENLPRINTTAB(3);"A <--";:GOTO1660 1620 IFLEFT$(A$(A,2),1)="*"THENLPRINTTAB(3);"B <--";:GOTO1660 1630 IFLEFT$(A$(A,3),1)="*"THENLPRINTTAB(3);"C <--";:GOTO1660 1640 IFLEFT$(A$(A,4),1)="*"THENLPRINTTAB(3);"D <--";:GOTO1660 1650 LPRINTTAB(3)"- <--"; 1660 LPRINTA;". ";:LPRINTQ$(A):LC=LC+1:IFQ1$(A)<>"XX"THENLPRINTTAB(15)Q1$(A):LC=LC+1 1700 IFQ2$(A)<>"XX"THENLPRINTTAB(15)Q2$(A):LC=LC+1 1710 LPRINTTAB(9)"A) ";A$(A,1);TAB(45)"B) ";A$(A,2):LPRINTTAB(9)"C) ";A$(A,3);TAB(45)"D) ";A$(A,4):LPRINT" ":LC=LC+4:IFLC>60THENGOSUB3100 1760 NEXTA:LPRINT" ":LPRINTTAB(40)"EACH QUESTION IS WORTH ";100/N;" POINTS":LPRINTCHR$(12):GOTO2280 1810 ' *** INPUT SAVED TEST *** 1820 CLS:ONERRORGOTO3400 1840 FILES"A:*.TWD":LINEINPUT"INPUT FILE NAME (NO .TWD)";DF$:IFDF$=""THEN2280 1870 DF$=DF$+".TWD":OPEN"I",1, DF$:INPUT#1,N:LINEINPUT#1,TT$:LINEINPUT#1,S$:LOCATE1,10:PRINTTT$,S$:FORA=1TON:INPUT#1,Q$(A),Q1$(A),Q2$(A),A$(A,1),A$(A,2),A$(A,3),A$(A,4):LOCATE24,5:PRINTQ$(A):NEXTA:CLOSE 2000 INPUT"DO YOU WANT TO ADD ON TO THIS TEST ";X$:IFLEFT$(X$,1)<>"Y"THEN920 2020 M=N:M=M+1:CLS:PRINT"GET READY TO ADD TO TEST":FORX=1TO300:NEXTX:N=100:GOTO420 2100 ' *** SAVE PROGRAM *** 2110 CLS:LINEINPUT"OUTPUT FILE NAME # ";DF$:DF$=DF$+".TWD":OPEN"O",1, DF$:PRINT#1,N:PRINT#1,TT$:PRINT#1,S$:FORA=1TON 2190 PRINT#1,CHR$(34);Q$(A);CHR$(34);CHR$(34);Q1$(A);CHR$(34);CHR$(34);Q2$(A);CHR$(34);CHR$(34);A$(A,1);CHR$(34);CHR$(34);A$(A,2);CHR$(34);CHR$(34);A$(A,3);CHR$(34);CHR$(34);A$(A,4)CHR$(34):PRINTTT$,Q$(A):NEXTA:CLOSE:CLS:PRINT"THE TEST HAS BEEN SAVED 2250 FORX=1TO300:NEXTX:REM *** MENU *** 2280 CLS 2290 PRINTTAB(60)N" QUESTIONS READY 2300 PRINTSTRING$(80,205):PRINT:PRINTTAB(23);:COLOR0,7:PRINT" M A K E A S E L E C T I O N ":COLOR7,0:PRINT:PRINT:PRINTTAB(25)"1 - WRITE TEST":PRINTTAB(25)"2 - INPUT SAVED TEST":PRINTTAB(25)"3 - SAVE PROGRAM 2410 PRINTTAB(25)"4 - PRINT TEST":PRINTTAB(25)"5 - RECALL TEST QUESTION":PRINTTAB(25)"6 - READ DIRECTORY ON DISK A 2440 W$=INKEY$:IFW$=""GOTO2440 2460 W=VAL(W$):IFW<1ORW>6THEN2440 2480 ONWGOTO280,1820,2110,920,2780,3200 2490 '*** RANDOMIZE ANSWERS ROUTINE *** 2500 X=VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2)) 2510 RANDOMIZEX 2520 X=INT(RND*(5)):IFX=0THEN2520 2540 N(1)=X 2550 X=INT(RND*(5)):IFX=0THEN2550 2570 N(2)=X:IFN(2)=N(1)THEN2550 2590 X=INT(RND*(5)):IFX=0THEN2590 2610 N(3)=X:IFN(3)=N(2)ORN(3)=N(1)THEN2590 2630 X=INT(RND*(5)):IFX=0THEN2630 2650 N(4)=X:IFN(4)=N(3)ORN(4)=N(2)ORN(4)=N(1)THEN2630 2670 PRINTN(1),N(2),N(3),N(4):B$(A,N(1))=A$(A,1):B$(A,N(2))=A$(A,2):B$(A,N(3))=A$(A,3):B$(A,N(4))=A$(A,4):A$(A,1)=B$(A,1):A$(A,2)=B$(A,2):A$(A,3)=B$(A,3):A$(A,4)=B$(A,4):RETURN 2770 ' *** RECALL TEST QUESTION *** 2780 PRINT"INPUT QUESTION # ... 2790 INPUT ;V 2810 LOCATE 5,30:PRINT"QUESTION #";V:PRINT STRING$(80,177):CLS:PRINT Q$(V):PRINT Q1$(V):PRINT Q2$(V):PRINT STRING$(80,205):PRINT TAB(15)A$(V,1);TAB(40)A$(V,2):PRINT TAB(15)A$(V,3);TAB(40)A$(V,4):PRINT"NEW QUESTION # ";V:PRINT:PRINT 2950 INPUT"--> ";QQ$(V):IFQQ$(V)=""THEN2300 2970 Q$(V)=QQ$(V):INPUTQ1$(V):IFQ1$(V)=""THENQ1$(V)="XX 3000 IFQ1$(V)="XX"THENQ2$(V)="XX"ELSEINPUTQ2$(V) 3010 IFQ2$(V)=""THENQ2$(V)="XX 3020 FORB=1TO4:CLS:PRINT"ANSWER # ";B:PRINTSTRING$(12,140):INPUTA$(V,B):IFA$(V,B)="X"THENB=1:CLS:GOTO3020 3080 NEXTB:GOTO2300 3100 LPRINTCHR$(12):LPRINTSTRING$(79,"="):LPRINTTT$;TAB(70)"PAGE ";PG:LPRINTSTRING$(79,"*"):LPRINT:LPRINT:PG=PG+1:LC=8:RETURN 3190 ' *** READ DIR FOR DISK A *** 3200 FILES"A:*.*":GOTO 2290 3220 REM **** PRINTER SUBROUTINES *** 3230 SC$=CHR$(15):EC$=CHR$(18):SEC$=CHR$(14)+CHR$(15):EEC$=CHR$(18)+CHR$(20):SE$=CHR$(14):EE$=CHR$(20):SLG$=CHR$(27)+CHR$(32):SI$=CHR$(27)+CHR$(52):EI$=CHR$(27)+CHR$(53):SU$=CHR$(27)+CHR$(45)+CHR$(1):EU$=CHR$(27)+CHR$(45)+CHR$(0) 3340 SEX$=CHR$(27)+CHR$(87)+CHR$(1):EEX$=CHR$(27)+CHR$(87)+CHR$(0):SD$=CHR$(27)+CHR$(71):ED$=CHR$(27)+CHR$(72):RETURN 3390 ' *** ERROR RECOVERY FROM NULL FILES *** 3400 LOCATE12,30:COLOR26:PRINT"NO TESTWRITER FILES ON DISK A":FORX=1TO1400:NEXTX:COLOR7:GOTO2280 65000 '*********************** SAVE ROUTINE ********************************** 65100 SAVE"B:TESTWRIT.BAS"